﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


using NPOI.HSSF.UserModel;

using ID = System.String;
using Value = System.String;


namespace ResxusEngine
{
    public class Importer
    {
        /// <summary>
        /// 엑셀 파일을 리소스 파일로 변환 
        /// </summary>
        /// <param name="xlsFilePath">읽어들인 엑셀파일</param>
        /// <param name="outputResFilePath">출력할 리소스 파일</param>
        public void Import(FileInfo xlsFilePath, FileInfo outputResFilePath)
        {
            try
            {
                Dictionary<ID, Value> list = new Dictionary<ID, Value>();

                //엑셀 파일을 헤더줄을 제외하고 읽어들임 
                using (FileStream stream = xlsFilePath.OpenRead())
                {
                    HSSFWorkbook importFile = new HSSFWorkbook(stream);
                    HSSFSheet sheet = importFile.GetSheetAt(0);

                    //나머지 내용을 딕셔너리에 채워넣음 
                    int totalRows = sheet.LastRowNum;
                    for (int rowIndex = 1; rowIndex < totalRows; rowIndex++)
                    {
                        try
                        {
                            HSSFCell idCell = sheet.Cell(rowIndex, 0);
                            HSSFCell valueCell = sheet.Cell(rowIndex, 1);

                            string id = idCell.ToString();
                            string value = valueCell.ToString();

                            list.Add(id, value);
                        }
                        catch (System.Exception ex)
                        {
                            Common.ErrorHandler(ex);
                        }
                    }
                }

                //딕셔너리를 리소스 파일로 익스포트 
                Writer.WriteResx(outputResFilePath.FullName, list.GetEnumerator());

                Console.WriteLine("Success! Report at : {0}", outputResFilePath.FullName);
            }
            catch (System.Exception ex)
            {
                Common.ErrorHandler(ex);
            }
        }

    }
}
